package com.shuai.frame.protocol;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> implements Serializable {
    private static final long serialVersionUID = 1233223L;
    /**
     * 请求头
     */
    private Header header;

    /**
     * 请求体
     */
    private T body;

    @Data
    public static class Header {
        /**
         * 魔数，保证安全性
         */
        private byte magic;
        /**
         * 版本号
         */
        private byte version;
        /**
         * 序列化方式
         */
        private byte serializer;
        /**
         * 消息类型（请求/响应）
         */
        private byte messageType;
        /**
         * 状态码
         */
        private byte status;
        /**
         * 请求ID，确保可溯源
         */
        private long requestId;
        /**
         * 消息体长度
         */
        private int bodyLength;
    }
}
